# Урок 2. Создание типа объекта Для каждого слушателя, чтобы он мог выполнить практические задания, описанные ниже, в системе были созданы модули «Библиотека». Код каждого модуля при этом формировался по шаблону lbrXX, где XX – порядковый номер пользователя, под которым будут выполняться задания. Модуль содержит свой собственный набор классов, бизнес-объектов, выборок, а также собственного приложение «Управление библиотекой XX». При этом все описанные ниже задания порядкового номера не содержат, и при их выполнении необходимо корректировать свои действия с учетом порядкового номера пользователя, под которым вы подключились к системе. ## Задание. Создание нового типа объекта Создайте новый тип объекта Lbr_OutOrderLimitUse (Выдача книг с ограниченным доступом). Для этого: - Откройте приложение «Настройка системы» и перейдите в перечень типов объектов (меню: Сущности | Типы объектов | Типы объектов); - Введите в фильтр по системному имени класса «Lbr_OutOrder»; - Скопируйте найденный тип объекта «Lbr_OutOrder»; - В открывшейся карточке нового, скопированного типа объекта, измените код на «Lbr_OutOrderLimitUse», наименование на «Выдача книг с ограниченным доступом» и краткое наименование на «Выдача книг ОО». Для нового типа объекта к уже выведенным добавьте закладки: - Прикрепленные файлы; - Подписи; - Проводки; - Маршруты; - Характеристики. Для этого: - В созданном типе объекта выделите группу настроек «Закладки типа объекта»; - В детализации справа, на панели фильтрации, отметьте признак «Отображать неактивные»; ```{note} Если отмечен признак «Отображать неактивные», то в списке выводятся все закладки, указанные в качестве доступных для данного класса (подкласса), независимо от того, выводятся ли они для выбранного типа объекта. ``` - Выделите все неактивные для данного типа объекта закладки и нажмите на кнопку «Добавить несколько». - Задайте порядок, в котором должны выводиться закладки, указав для них значение в атрибуте «Порядковый номер». Перейдите в приложение «Библиотека», в интерфейс «Выдача книг». Откройте документ и измените его тип на только что созданный. В детализации документа должны отобразиться добавленные ранее закладки. Сделайте атрибут «sNumDoc» обязательным для заполнения. При этом проверка должна срабатывать при переводе состояния из «Оформляется» в «Выполнен». Для этого: - В типе объекта перейдите на закладку «Управление атрибутами»; - В перечне настраиваемых атрибутов добавьте атрибут «sNumDoc» и укажите для него признак «Обязателен для ввода»; - В список состояний, при переводе из которых будет выполняться проверка на обязательность атрибута, укажите «Оформляется». - Создайте новый документ, выберите соответствующий тип, на котором настраивали обязательность ввода атрибута и попробуйте перевести состояние из «Оформляется» в «Выполнен». Система должна выдать сообщение о том, что необходимо заполнить значение для атрибута и состояние должно остаться прежнее. Для типа объекта настройте переход из «Оформляется» в «Согласуется» и из «Согласуется» в «Выполнен». Для этого: - В типе объекта перейдите на вкладку «Переходы состояний»; - Выделите состояния «Оформляется» и добавьте переход в «Согласуется»; - Аналогично настройте переходы из «Согласуется» в «Выполнен» и из «Согласуется» в «Оформляется»; - Сбросьте кэш для типа объекта; - Перейдите в документ (если он открыт, то его надо закрыть и открыть заново) и попробуйте перевести состояние. Состояния документа должны переводиться в соответствии со сделанными настройками. Для типа объекта добавьте созданные ранее характеристики. Для этого: - Перейдите на вкладку «Объектные характеристики»; - Выполните операцию «Создать группу», в открывшемся диалоге введите наименование группы «Дополнительные характеристики» и нажмите кнопку «Ок»; - Выполните операцию «Создать атрибут»; - В открывшемся диалоге выбора атрибутов класса на панели фильтрации укажите фильтр «Указать все атрибуты класса»; - Выберите созданный ранее атрибут «Предполагаемая дата возврата», а также атрибут «sNumDocBMs _dz»; - Нажмите на кнопку «Выбор». - Для атрибута «sNumDocBMs_dz» измените наименование на «Номер в разрезе читателя». - Откройте документ данного типа и на вкладке «Характеристики» проверьте, что выводятся соответствующие атрибуты. Сделайте так, чтобы значение атрибута «Номер в разрезе читателя» (sNumDocBMs_dz) вычислялось автоматически. Для этого: - В типе объекта перейдите на вкладку «Автовычисляемые колонки»; - Нажмите кнопку «Создать»; - В диалоге выбора атрибутов выберите «sNumDocBMs_dz»; - Для добавленного атрибута отметьте признаки «Сделать не редактируемым» и «Выводить кнопку автовычисления»; - Введите запрос (см. ниже) для вычисления значения атрибута, заменив «lbr_outorder» на таблицу, соответствующую вашему пользователю. ```sql (select coalesce (max(o.snumdocbms_dz), 0)+1 from lbr_outorder o where o.idperson = t.idperson) ``` - Создайте новый документ, выбрав соответствующий тип, укажите читателя и сохранитесь. Атрибут «Номер в разрезе читателя» на вкладке «Характеристики» должен заполниться автоматически. ![](img/autonum.png)